Security News
Research
Supply Chain Attack on Rspack npm Packages Injects Cryptojacking Malware
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
The ajv-i18n package provides internationalization (i18n) support for the Ajv JSON schema validator. It allows you to generate error messages in different languages, making it easier to localize your applications.
Localizing error messages
This feature allows you to localize error messages generated by Ajv. In this example, the error messages are localized to Chinese using the `localize.zh` function.
const Ajv = require('ajv');
const localize = require('ajv-i18n');
const ajv = new Ajv();
const schema = { type: 'object', properties: { foo: { type: 'string' } }, required: ['foo'], additionalProperties: false };
const validate = ajv.compile(schema);
const data = { bar: 2 };
const valid = validate(data);
if (!valid) {
localize.zh(validate.errors); // Localize errors to Chinese
console.log(validate.errors);
}
Supporting multiple languages
This feature demonstrates the ability to support multiple languages. In this example, the error messages are localized to Russian using the `localize.ru` function.
const Ajv = require('ajv');
const localize = require('ajv-i18n');
const ajv = new Ajv();
const schema = { type: 'object', properties: { foo: { type: 'string' } }, required: ['foo'], additionalProperties: false };
const validate = ajv.compile(schema);
const data = { bar: 2 };
const valid = validate(data);
if (!valid) {
localize.ru(validate.errors); // Localize errors to Russian
console.log(validate.errors);
}
i18next is a popular internationalization framework for JavaScript. It provides a complete solution for localizing your application, including translation management, language detection, and more. Unlike ajv-i18n, which focuses on localizing error messages from Ajv, i18next offers a broader range of i18n functionalities.
messageformat is a library for handling both pluralization and gender in messages. It allows you to create complex messages with variable parts that can be translated into different languages. While ajv-i18n is specifically designed for localizing Ajv error messages, messageformat provides a more general solution for creating and managing localized messages.
Internationalised error messages for Ajv - currently the fastest JSON-Schema validator
locale | language | contributor | draft-04 | draft-06* | draft-07** |
---|---|---|---|---|---|
🇬🇧 en | English | ✓ | ✓ | ✓ | |
AR ar | Arabic | Mahmoud-Mardeni | ✓ | ✓ | ✓ |
CA ca | Catalan | alexandreec | ✓ | ✓ | ✓ |
🇨🇿 cz | Czech | kiskovacs NAM0007 | ✓ | ✓ | ✓ |
🇩🇪 de | German | jmtoball gflohr | ✓ | ✓ | ✓ |
🇪🇸 es | Spanish | jpablom | ✓ | ✓ | ✓ |
🇫🇷 fr | French | monlouisj Telokis | ✓ | ✓ | ✓ |
🇭🇺 hu | Hungarian | szilveszter9 | ✓ | - | - |
🇮🇩 id | Indonesian | Eko Eryanto | ✓ | ✓ | ✓ |
🇮🇹 it | Italian | jasoniangreen lucacorti | ✓ | ✓ | ✓ |
🇯🇵 ja | Japanese | gilgongo | ✓ | - | - |
🇰🇷 ko | Korean | MinByeongDon | ✓ | ✓ | ✓ |
🇳🇴 nb | Norwegian bokmål | mtramm | ✓ | ✓ | - |
🇳🇱 nl | Dutch | pimlie niekvb | ✓ | ✓ | ✓ |
🇵🇱 pl | Polish | danielzurawski | ✓ | - | - |
🇧🇷 pt-BR | Português - Brasil | marcosrava ggondim | ✓ | ✓ | ✓ |
🇷🇺 ru | Russian | ✓ | ✓ | ✓ | |
🇸🇰 sk | Slovak | kiskovacs | ✓ | ✓ | - |
🇸🇪 sv | Swedish | limmen | ✓ | ✓ | - |
🇹🇭 th | Thai | encX | ✓ | ✓ | ✓ |
🇨🇳 zh | Chinese | jinzhubaofu leuction | ✓ | ✓ | ✓ |
🇹🇼 zh-TW | Chinese - Taiwan | minipai | ✓ | ✓ | ✓ |
* added boolean schema, keywords const
, contains
, propertyNames
** added keywords if
/then
/else
Please contribute locales that you need to use if they are missing or incomplete.
Using npm:
npm install ajv-i18n
Using bower:
bower install ajv-i18n
cd bower_components/ajv-i18n
npm install && npm run bundle-all
In node:
var Ajv = require('ajv'); // version >= 2.0.0
var localize = require('ajv-i18n');
// option `i18n` is required for this package to work
var ajv = Ajv({ allErrors: true });
var validate = ajv.compile(schema);
var valid = validate(data);
if (!valid) {
// ru for Russian
localize.ru(validate.errors);
// string with all errors and data paths
console.log(ajv.errorsText(validate.errors, { separator: '\n' }));
}
To require only necessary locales in browser (with browserify):
var localize_ru = require('ajv-i18n/localize/ru');
or
var localize = {
en: require('ajv-i18n/localize/en'),
ru: require('ajv-i18n/localize/ru')
};
See Ajv docs for more information.
npm install
git submodule update --init
npm test
Functions that localize error messages are generated using doT templates in messages and localize.jst template. Templates are precompiled so doT is not a run-time dependency.
npm run build
- compiles functions to localize folder.
ajv-i18n package is a part of Tidelift enterprise subscription - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.
To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.
FAQs
Internationalised error messages for Ajv JSON validator
We found that ajv-i18n demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.
Security News
Sonar’s acquisition of Tidelift highlights a growing industry shift toward sustainable open source funding, addressing maintainer burnout and critical software dependencies.